/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package accesoDatos;

/**
 *
 * @author user
 */



import logica.*;
import java.sql.*;
import java.util.Vector;

public class DAOAspirante{
    
    FachadaBD fachada;
    
    
    public DAOAspirante(){
        fachada=new FachadaBD();
    }
    
    public int guardarAspirante(Aspirante aspirante){
        String sql="INSERT INTO aspirante(identificacion,nombre,telefono,direccion,e_mail,periodo_insc,copia_cc,"
                + "titulo_pregrado,universidad,acta_grado,promedio,hoja_vida,carta_recomendacion,carta_motivacion,"
                + "recibo_pago,cod_prog,calificacion) VALUES ('"
                + aspirante.getId() +"','" + aspirante.getNombre() +"','" + aspirante.getTelefono() + "','"
                + aspirante.getDireccion() + "','" + aspirante.getEmail() + "','" + aspirante.getPeriodoIns() + "',"
                + aspirante.isCopiaCC() + ",'" + aspirante.getTituloPregrado() + "','" + aspirante.getUniversidad() + "',"
                + aspirante.isActaGrado()+","+aspirante.isPromedio()+","+ aspirante.isHojaVida() + ","
                + aspirante.isCartaRecomendacion() + "," + aspirante.isCartaMotivacion() + ","
                + aspirante.isReciboPago() + ",'" + aspirante.getCodPrograma()+ "'," +aspirante.getCalificacion()+")";
        
        try{    
            Connection c=fachada.conectar();
            Statement sentencia=c.createStatement();
            int numFilas= sentencia.executeUpdate(sql);
            fachada.desconectar(c);
            System.out.println("Aspirante guardado");
            return numFilas;
        }
        catch(SQLException e){}
        catch(Exception e){}
        return -1;
    }
    
    public Aspirante consultarAspirante(String id_aspirante, String periodo){
        Aspirante aspirante = new Aspirante();
        
        String consulta_sql = "SELECT * FROM aspirante"
                                + "WHERE identificacion=" + id_aspirante + " AND periodo_insc="+periodo;
        
        try{
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(consulta_sql);
            
            while(res.next()){
                aspirante.setId(res.getString(1));
                aspirante.setNombre(res.getString(2));
                aspirante.setTelefono(res.getString(3));
                aspirante.setDireccion(res.getString(4));
                aspirante.setEmail(res.getString(5));
                aspirante.setPeriodoIns(res.getString(6));
                aspirante.setCopiaCC(res.getBoolean(7));
                aspirante.setTituloPregrado(res.getString(8));
                aspirante.setUniversidad(res.getString(9));
                aspirante.setActaGrado(res.getBoolean(10));
                aspirante.setPromedio(res.getBoolean(11));
                aspirante.setHojaVida(res.getBoolean(12));
                aspirante.setCartaRecomendacion(res.getBoolean(13));
                aspirante.setCartaMotivacion(res.getBoolean(14));
                aspirante.setReciboPago(res.getBoolean(15));
                aspirante.setCodPrograma(res.getString(16));
                aspirante.setCalificacion(res.getDouble(17));
            }
            
            c.close();
            System.out.println("aspirante consutlada y Conexion cerrada");
            return aspirante;
        }
        catch(SQLException e){}
        catch(Exception e){}
        
        return null;
    }
    
    public int registrarCalificacion(String id,double calificacion, String periodo){
        
        String sql = "UPDATE aspirante SET calificacion=" + calificacion
                + "WHERE identificacion=" + id + "periodo_insc=" + periodo;
        System.out.println(sql);
        
        try{
            Connection c=fachada.conectar();
            Statement sentencia=c.createStatement();
            int numFilas= sentencia.executeUpdate(sql);
            fachada.desconectar(c);
            return numFilas;
        }
        catch(SQLException e){}
        catch(Exception e){}
        
        return -1;
    }
    
    public Vector<Aspirante> generarPuntajes(String cod_prog, String periodo){
        
        Vector<Aspirante> reporte = new Vector(1,1);
        
        String consulta_sql = "SELECT aspirante.identificacion,aspirante.nombre,programa.nombre,aspirante.calificacion"
                                + "FROM aspirante NATURAL JOIN programa"
                                + "WHERE aspirante.cod_prog=" + cod_prog + "periodo_insc="+periodo+" ORDER BY calificacion";
        
        try{
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(consulta_sql);
            
            while(res.next()){
                Aspirante aspirante = new Aspirante();
                aspirante.setId(res.getString(1));
                aspirante.setNombre(res.getString(2));
                aspirante.setTelefono(res.getString(3));
                aspirante.setDireccion(res.getString(4));
                aspirante.setEmail(res.getString(5));
                aspirante.setPeriodoIns(res.getString(6));
                aspirante.setCopiaCC(res.getBoolean(7));
                aspirante.setTituloPregrado(res.getString(8));
                aspirante.setUniversidad(res.getString(9));
                aspirante.setActaGrado(res.getBoolean(10));
                aspirante.setPromedio(res.getBoolean(11));
                aspirante.setHojaVida(res.getBoolean(12));
                aspirante.setCartaRecomendacion(res.getBoolean(13));
                aspirante.setCartaMotivacion(res.getBoolean(14));
                aspirante.setReciboPago(res.getBoolean(15));
                aspirante.setCodPrograma(res.getString(16));
                aspirante.setCalificacion(res.getDouble(17));
                
                reporte.add(aspirante);
            }
            
            fachada.desconectar(c);
            System.out.println("puntajes ordenados y Conexion cerrada");
            return reporte;
        }
        catch(SQLException e){}
        catch(Exception e){}
        
        return null;
    }
    
    
    
    public Aspirante generarDocumentacionPendiente(String id_aspirante){
        Aspirante aspirante= new Aspirante();
        String consulta_sql = "SELECT * FROM aspirante WHERE identificacion='" + id_aspirante+ "'";
                               
        
         
        try{
            Connection c= fachada.conectar();
            Statement sentencia = c.createStatement();
            ResultSet res=sentencia.executeQuery(consulta_sql);
            while(res.next()){

               
                
                aspirante.setCopiaCC(res.getBoolean(7));
                aspirante.setActaGrado(res.getBoolean(10));
                aspirante.setPromedio(res.getBoolean(11));
                aspirante.setHojaVida(res.getBoolean(12));
                aspirante.setCartaRecomendacion(res.getBoolean(13));
                aspirante.setCartaMotivacion(res.getBoolean(14));
                aspirante.setReciboPago(res.getBoolean(15));
                
                
            }
            
            fachada.desconectar(c);
            System.out.println("Aspirante consultado");
            return aspirante;
        }
        catch(SQLException e){}
        catch(Exception e){}
        
        return null;
    }
   
}